package com.quan.mall.service;

import com.quan.mall.commons.vo.OmsOrderVo;
import com.quan.mall.commons.vo.UmsMemberCouponsVo;
import com.quan.mall.commons.vo.UmsMemberVo;
import com.quan.mall.entity.UmsMember;
import com.quan.commons.core.utils.PageUtils;
import com.quan.commons.core.biz.support.MyBaseService;

import java.util.List;

/**
 * 会员
 *
 * @author yhaoquan
 * @email yhaoquan@163.com
 * @date 2021-03-08 21:41:30
 */
public interface UmsMemberService extends MyBaseService<UmsMember> {

    /**
     * 创建会员账号
     * @param vo
     * @return
     */
    public boolean saveMember(UmsMemberVo vo);

    /**
     * 列表查询
     * @param vo
     * @return
     */
    public List<UmsMemberVo> queryList(PageUtils pageUtils, UmsMemberVo vo) ;

    /**
     * 分页查询
     * @param pageUtils
     * @param vo
     * @return
     */
    public PageUtils queryPage(PageUtils pageUtils, UmsMemberVo vo);

    /**
     * 会员注册
     * @param vo
     * @return
     */
    public UmsMemberVo register(UmsMemberVo vo);

    /**
     * 根据微信openid获取会员信息
     * @param openid
     * @return
     */
    UmsMemberVo getMemberByOpenId(String openid);

    /**
     * 根据邀请码加载会员
     * @param code
     * @return
     */
    public UmsMember getMemberByCode(String code);


    /**
     * 开通/禁用
     * @param id
     * @param status
     */
    public void changeStatus(Long id, Integer status);


    /**
     * 根据手机号获取会员信息
     * @param mobile
     * @return
     */
    UmsMember getMemberByMobile(String mobile);

    /**
     * 会员升级
     * @param memberId 会员ID
     * @param levelId 级别ID
     * @return
     */
    UmsMemberVo upgradeMember(Long memberId, Long levelId);

    /**
     * 我的推荐
     *      邀请人数
     *      邀请会员升级获取的提成金额
     *      邀请的注册的会员
     * @param memberId
     * @return
     */
    UmsMemberVo getMyCecommend(Long memberId);

    /**
     * 获取我的钱包
     * @param memberId
     * @return
     */
    UmsMemberVo getMyWallter(Long memberId);

    /**
     * 我的分销记录
     * @param pageUtils
     * @param vo
     * @return
     */
    PageUtils getMyDistribution(PageUtils pageUtils, OmsOrderVo vo);

    /**
     * 给会员添加优惠券
     * @param vo
     */
    void addCoupon(UmsMemberVo vo);

    /**
     * 获取用户优惠券
     * @param memberId
     * @return
     */
    List<UmsMemberCouponsVo> getUserCoupons(Long memberId);
}

